package com.kmxd.ams.core.common.enums;

import com.kmxd.ams.core.common.constant.ErrorCode;
import com.kmxd.ams.core.exception.BizException;
import java.util.Arrays;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.compress.utils.Lists;

/**
 * 档案状态
 *
 * @author ZuoLG
 */
@Getter
@AllArgsConstructor
public enum ArchStatusEnum {
  /** 临时-不允许使用 */
  SF1(-1, "临时-不允许使用"),
  /** 待整理 */
  S0(0, "待整理"),
  /** 已归档 */
  S1(1, "已归档"),
  /** 移交中 */
  S2(2, "移交中"),
  /** 鉴定中 */
  S3(3, "鉴定中"),
  /** 待销毁 */
  S4(4, "待销毁"),
  /** 已销毁 */
  S5(5, "已销毁"),
  /** 已整理 */
  S6(6, "已整理"),
  /** 提交中 */
  S7(7, "提交中"),
  /** 不归档 */
  S8(8, "不归档"),
  /** 预归档 */
  S9(9, "预归档"),
  /** 回收站 */
  S99(-99, "回收站");
  private Integer code;
  private String desc;

  public static ArchStatusEnum convert(Integer status) {
    return Arrays.stream(values())
        .filter(x -> x.code.equals(status))
        .findAny()
        .orElseThrow(() -> BizException.instance(ErrorCode.NOT_FOUND, "未找到档案状态：" + status));
  }

  /**
   * 获取未移交的状态
   *
   * @return
   */
  public static List<Integer> noHandOver() {
    List<Integer> status = Lists.newArrayList();
    status.add(S0.getCode());
    status.add(S1.getCode());
    return status;
  }
}
